﻿using Seg.Entidades;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace Seg.Datos
{
    public class UsuarioOficinaDatos
    {
        BD_SEGEntities context = new BD_SEGEntities();

        public bool validarUsuarioXOficina(int CodigoUsuario, int CodigoOficina)
        {
            var datos = context.UsuarioOficina.Where(x =>
                (x.CodigoUsuario == CodigoUsuario)
                    && (x.CodigoOficina != CodigoOficina)
                && (x.Anulado == false)
                ).Count();

            return datos > 0 ? false : true;

        }
        public UsuarioOficina obtenerUsuOfiXUsuarioOficina(int CodigoUsuario, int CodigoOficina)
        {
            var datos = context.UsuarioOficina.Where(x =>
                (x.CodigoUsuario == CodigoUsuario)
                && (x.CodigoOficina == CodigoOficina)
                ).FirstOrDefault();
            return datos;
        }
        public UsuarioOficina obtenerUsuOfiXCodigo(int CodigoUsuarioOficina)
        {
            var datos = context.UsuarioOficina.Where(x =>
                (x.CodigoUsuarioOficina == CodigoUsuarioOficina)
                ).FirstOrDefault();
            return datos;
        }

        public UsuarioOficina obtenerUsuOficinaXUsuario(int CodigoUsuario)
        {
            var datos = new Seg.Entidades.UsuarioOficina();
            datos = context.UsuarioOficina.Where(x =>
                (x.CodigoUsuario == CodigoUsuario)
                && (x.Anulado == false)
                ).FirstOrDefault();
            return datos;
        }

        public int Insertar(UsuarioOficina entidad)
        {
            var datos = context.UsuarioOficina.Where(x =>
                (x.CodigoOficina == entidad.CodigoOficina)
                && (x.CodigoUsuario == entidad.CodigoUsuario)
                ).FirstOrDefault();
            var result = 0;
            if (datos != null)
            {
                entidad.CodigoUsuarioOficina = datos.CodigoUsuarioOficina;
                result = entidad.CodigoUsuarioOficina;
            }
            else
            {
                entidad.CodigoUsuarioOficina = GenerarCodigo();
                context.UsuarioOficina.Add(entidad);
                var r = context.SaveChanges();
                result = r == 0 ? r : entidad.CodigoUsuarioOficina;
            }
            return result;
        }

        int GenerarCodigo()
        {
            var actual = context.UsuarioOficina.Max(x => x.CodigoUsuarioOficina);
            return actual + 1;
        }
    }
}
